#!/usr/bin/perl
use strict;
use warnings;
use diagnostics;
use lib ("./lib", "../lib");
use Test::More qw/no_plan/;

BEGIN { use_ok( 'DBIx::EntityRecord::Utils' ); }

# encode_attribute
is( encode_attribute(), undef );
is( encode_attribute(undef), undef );
is( encode_attribute(''), undef );
is( encode_attribute('1'), undef );
is( encode_attribute('!'), undef );
is( encode_attribute('%'), undef );
is( encode_attribute('at@#tr'), undef );
is( encode_attribute('-attr'), undef );
is( encode_attribute(':attr'), undef );
is( encode_attribute([]), undef );
is( encode_attribute('a'), ':a' );
is( encode_attribute('a1'), ':a1' );
is( encode_attribute('attr'), ':attr' );
is_deeply( [ encode_attribute('a', 'b', 'c') ], [ ':a', ':b', ':c' ] );
is_deeply( [ encode_attribute('a', '1', 'c') ], [ ':a', undef, ':c' ] );

# decode_attribute
is( decode_attribute(), undef );
is( decode_attribute(undef), undef);
is( decode_attribute('asdf'), undef);
is( decode_attribute('-1'), undef );
is( decode_attribute(':1'), undef );
is( decode_attribute(':1a'), undef );
is( decode_attribute(':a$'), undef );
is( decode_attribute('-a'), undef );
is( decode_attribute(':a'), 'a' );
is( decode_attribute(':a1'), 'a1' );
is( decode_attribute(':a1'), 'a1' );
is( decode_attribute(':a_1'), 'a_1' );
is( decode_attribute(':a&1'), undef );
is_deeply( [ decode_attribute(':a_1', undef, ':b') ], [ 'a_1', undef, 'b' ] );
is_deeply( [ decode_attribute(':a_1', [], ':b') ], [ 'a_1', undef, 'b' ] );
is_deeply( [ decode_attribute(':a', ':b', ':c') ], [ 'a','b','c' ] );

